package at.technikum.bic.ese.hatcam;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.util.Log;
import at.technikum.bic.ese.hatcam.services.HatcamIntervalService;

/**
 * Diese Activity dient zum Einstellen von Intervall und Foto-Qualit�t, sowie dem Aktivieren der Hatcam. 
 */
public class HatcamPreferences extends PreferenceActivity {
	/** Anwendungs Log-Tag f�r das filtern mit Logcat */
	private static final String TAG = "Hatcam";
	
    /** 
     * Wird aufgerufen wenn die Activity das erste mal erstellt wird 
     */
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.hatcam_preferences);
        Log.i(TAG, "HatcamPreferences wurde erstellt (onCreate)");
        
        setupPreferences();
        startIntervalService();
    }
    
    /**
     * Lege die Events der Einstellungen fest (OnClick, etc.)
     */
    private void setupPreferences() {
    	Log.i(TAG, "Preferences werden initialisiert (setupPreferences)");
    	setupActivateButton();
    }
    
    private void setupActivateButton() {
    	CheckBoxPreference activateButton = (CheckBoxPreference) findPreference("preference_activate");
    	activateButton.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

			
			public boolean onPreferenceChange(Preference arg0, Object arg1) {
				Log.i(TAG,"Der Benutzer hat den Activate-Button gedr�ckt");
				
				if((Boolean) arg1 == true) {
					Log.i(TAG, "Hatcam wurde aktiviert. Starte Intervall Service");
					// Setting wurde noch nicht aktiviert (erst nach return)
					// Daher muss das Intervall mit true gestartet werden
					startIntervalService(true);
				} else {
					Log.i(TAG, "Hatcam wurde deaktiviert. Mache nichts");
				}
				return true;
			}
    	});
    }
    
    private void startIntervalService(boolean overrideSettings) {
    	SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
		boolean hatcamActivated = prefs.getBoolean("preference_activate", false);
		
		if(hatcamActivated || overrideSettings) {
			Log.i(TAG, "Starte nun das HatcamIntervalService (startIntervalService)");
			
			Context c = getApplicationContext();
			Intent serviceIntent = new Intent(c, HatcamIntervalService.class);
			c.startService(serviceIntent);
		} else {
			Log.i(TAG, "Hatcam ist deaktiviert. HatcamIntervalService wird nicht gestartet (startIntervalService)");
		}
    }
    
    /**
     * Startet das Intervall-Service (f�r wiederkehrende Fotos) je nach Einstellungen.
     * Startet nur wenn die Einstellung 'preference_activate' auf true ist.
     */
    private void startIntervalService() {
		startIntervalService(false);
	}
}